package ningbo.generic;

import jdk.management.resource.internal.inst.SocketOutputStreamRMHooks;

import java.awt.print.Printable;
import java.text.Format;
import java.util.Arrays;

/**
 * @Author 宁铂
 * @Date 2021/7/27 18:41
 * @Version 1.0
 */
public class TestGeneric2 {
    /** 分别打印三个数组中的所有元素 */
    public static void main(String[] args) {
        Integer[] a = {1,2,3,4,5,6,7,8,9,10};
        print(a);

        String[] b = {"大哥","二哥","三哥","四哥","五哥","六哥","七弟"};
        print(b);

        Double[] c = {6.0,6.6,6.66,6.666,6.6666};
        print(c);
    }

//    private static void print(Integer[] a) {
//        /** 方法1 遍历数组 */
//        for (int i = 0; i<=a.length-1; i++){
//            System.out.println(a[i]);
//        }
//
//        /** 高效for循环 -- 使用场景,只需对数据从头到尾遍历一次,无法按照下标来操作元素 */
//        /** 高效for循环快速生成 快捷键 iter */
//        for (Integer integer : a) {
//            System.out.println(integer);
//        }
//    }
//    private static void print(String[] b) {
//        for (String s : b) {
//            System.out.println(s);
//        }
//    }
//    private static void print(Double[] c) {
//        for (Double aDouble : c) {
//            System.out.println(aDouble);
//        }
//    }

    /** 方法2 使用泛型方法
     *  可以写出更通用的代码
     *  必须两处同时出现:
     *  1.方法参数类性 E[]
     *  2.加入尖括号E表示泛型 <E>
     * */
    private static <E> void print(E[] element){
        for (E e : element) {
            System.out.println(e);
        }
    }
}

class TestDemo{
    public void  demo(){
        /** 静态创建数组 */
        String[] s1 = new String[]{"wudi","wuidi"};
        String[] s2 = {"wudi","wudi"};

        System.out.println(Arrays.toString(s1));

        /** 动态创建 */
        String[] s3 = new String[6];
    }
}